前面介紹了那麼多東西,我認為差不多可以開始做個專案了,這次要做的主題是
簡單講就是一個任務列表。題目很簡單,但是包含了資料庫的操作(CRUD),而且之後還可以做出很多延伸,例如加上登入功能或是每個任務都有詳細註解等等,總之,對新手來說,這是個好題目。
我們回到主題,該怎麼開始寫專案呢,先別急著寫code,先考慮好你的需求,設計好資料表再開始寫code。
我個人習慣開始coding前,會先離開電腦,找張白紙將我腦中所想的架構畫出來。整理出架構後,開始設計table,你的資料要如何變成一張資料表,並且每個資料表要如何關聯,先想好後,再開始寫code。
小弟我現在在好想工作室,目前有跟IOS學員合作做專案,我們的想法是想做出簡化版的trello,ios學員做前端,我負責做後端。而這東西說白了,其實也就是高級版的Todolist。而我打算將這個專案引用到鐵人賽,我會先從這個專案的骨架做起,並且先開出api文件,有多餘的篇服會再慢慢新增其他功能。
Todolist的功能,我會先從基本款做起。快速的開出api後,將api文件交給前端,再慢慢新增其他api。這樣才不會讓前端等你很久,前端拿到api後有什麼問題也可以先反應給你,先列出這些功能吧:
我的目的是開出api,這些功能成功後都是回傳json格式的資料給對方,我們不需要管前端頁面怎麼切換,怎麼顯示,我們就是負責資料庫的CRUD就可以了。
再來可以決定一下功能,例如登入功能:
我的話會先列出必須存到資料庫的資料
例如task資料有:
可能還有更多,總之先決定好資料表的內容吧。
再來設計資料表需要一定的正規化。例如你可以將使用者資料和task資料分開成兩張表。可以避免資料的重複性,使用其來會比較方便。
正規化是為了解決資了表重複的部份,將資料表拆開,並建立資料表之間的關聯性。正規化分為好幾個等級,看你要使用到哪個層級。
正規化聽起來好像很複雜,我們先不深入探討,簡單講解。
我們可以將資料表分為一對一(one to one)、一對多(one to many)及多對多(many to many),的關係。
資料表之間有重複的地方,我們可以將其分開併建立關聯,一對一的話要不要分就看個人,主要分的是一對多以及多對多。
那我們該如何知道資料的關聯性是哪種呢?
我這邊有個簡單的分類法
以這個專案為例
我們知道一個使用者有多個Task,那我們就可以把資料表分成
而一個task若沒有多個user,那user跟task就是個一對多的關係
若是有,那就是多對多的關係。
很簡單吧,而設置關聯式資料表,需要設定外鍵(foreign key)。已一對多為例,一個user有多個task,要將task表關聯到user。而laravel有好用的migration功能,可以快速的幫你建立好資料表,詳細的設定我下次會介紹,敬請期待。